#ifndef _asce_inc_render_galaxy
#define _asce_inc_render_galaxy

#include <vector>
#include <string>
#include <cstring>
#include <iostream>
#include <GL/gl.h>   // OpenGL itself.
#include <GL/glu.h>  // GLU support library.
#include <GL/glut.h> // GLUT support library.
#include <GL/glx.h>     // Header file fot the glx libraries.

#include "galaxy.h"
#include "solar_system.h"
#include "render_common.h"

#define SOL_SYS_BIG_SIZE	7
#define SOL_SYS_MID_SIZE	5
#define SOL_SYS_SMA_SIZE	3

#define NO_SYS_TO_DISPLAY	-1

#define GALAXY_TEXT_RIGHT_SPACE	15
#define GALAXY_TEXT_DOWN_SPACE	10


class		RenderGalaxy : public RenderCommon
{
public:
  
  RenderGalaxy();
  virtual ~RenderGalaxy();

  void		init(Galaxy *galaxy);
  void		render();
  
  

  void		xRot(GLfloat xRot);
  void		yRot(GLfloat yRot);
  void		zoomChange(GLfloat zoom);
  void		resetTransform();
  void		normalKeyEvent(unsigned char key, int x, int y);
  void		specialKeyEvent(int key, int x, int y);
  void		mouseEvent(int button, int state, int x, int y);
  void		mousePassiveMotion(int x, int y);

  

private:
  
  // base display list for the font set.
  int		font_base;            
  
  int		sysToPrint;

  GLfloat	xrot;
  GLfloat	yrot;
  GLfloat	zoom;
  
  Galaxy	*galaxy;

  //virtual void	processHits(GLint hits, GLuint buffer[]);
  
  
  void		printPlaneteInfo(int x, int y, SolarSystem *system);

};

#endif
